<script>
import { checkNeedLogin, checkIsLoggedIn, redirectToLogin } from './utils/auth.js'

export default {
	onLaunch: function() {
		console.log('App Launch')
		// 在应用启动时设置页面拦截器
		this.setupInterceptors()
	},
	onShow: function() {
		console.log('App Show')
	},
	onHide: function() {
		console.log('App Hide')
	},
	// 全局路由守卫
	onPageNotFound(options) {
		const { path } = options
		console.log('页面未找到:', path)
	},
	
	// 添加全局页面跳转拦截器
	globalData: {
		_router: null
	},
	
	methods: {
		// 设置页面拦截器
		setupInterceptors() {
			// 添加uni.navigateTo拦截器
			const navigateToInterceptor = {
				invoke(args) {
					console.log('navigateTo拦截:', args.url)
					// 检查目标页面是否需要登录
					if (checkNeedLogin(args.url)) {
						if (!checkIsLoggedIn()) {
							// 未登录则跳转到登录页
							console.log('需要登录，跳转到登录页')
							uni.navigateTo({
								url: '/pages/login/index'
							})
							return false; // 阻止原始跳转
						}
					}
					return args; // 允许原始跳转
				},
				success() {},
				fail() {}
			};
			
			// 添加uni.switchTab拦截器
			const switchTabInterceptor = {
				invoke(args) {
					console.log('switchTab拦截:', args.url)
					// 检查目标页面是否需要登录
					if (checkNeedLogin(args.url)) {
						if (!checkIsLoggedIn()) {
							// 未登录则跳转到登录页
							console.log('需要登录，跳转到登录页')
							uni.navigateTo({
								url: '/pages/login/index'
							})
							return false; // 阻止原始跳转
						}
					}
					return args; // 允许原始跳转
				},
				success() {},
				fail() {}
			};
			
			// 添加uni.redirectTo拦截器
			const redirectToInterceptor = {
				invoke(args) {
					console.log('redirectTo拦截:', args.url)
					// 检查目标页面是否需要登录
					if (checkNeedLogin(args.url)) {
						if (!checkIsLoggedIn()) {
							// 未登录则跳转到登录页
							console.log('需要登录，跳转到登录页')
							uni.navigateTo({
								url: '/pages/login/index'
							})
							return false; // 阻止原始跳转
						}
					}
					return args; // 允许原始跳转
				},
				success() {},
				fail() {}
			};
			
			// 注册拦截器
			uni.addInterceptor('navigateTo', navigateToInterceptor);
			uni.addInterceptor('switchTab', switchTabInterceptor);
			uni.addInterceptor('redirectTo', redirectToInterceptor);
		}
	}
}
</script>

<style>
	/*每个页面公共css */

	
	.iconfont {
		font-family: 'iconfont';
	}
	
	/* 定义图标编码 */
	.icon-home:before { content: '\e600'; }
	.icon-home-fill:before { content: '\e601'; }
	.icon-notification:before { content: '\e602'; }
	.icon-notification-fill:before { content: '\e603'; }
	.icon-repair:before { content: '\e604'; }
	.icon-repair-fill:before { content: '\e605'; }
	.icon-file:before { content: '\e606'; }
	.icon-file-fill:before { content: '\e607'; }
	.icon-user:before { content: '\e608'; }
	.icon-user-fill:before { content: '\e609'; }
	
	/* 为所有页面添加底部padding，防止内容被navbar遮挡 */
	page {
		padding-bottom: 120rpx;
	}
</style>
